|
1
|
- Jędrzej Sobański
- 23 marzec 2005
|
|
2
|
|
|
3
|
- Skrót od eXtensible Markup Language
- Język znaczników dla dokumentów o strukturze hierarchicznej
- Pochodzi od SGML
- Standard przekazywania informacji wraz z ich opisem
- Plik tekstowy
|
|
4
|
- Na początku deklaracja:
- <?xml version="1.0"?>
- Dokument zawiera jeden element nazywany korzeniem (element główny)
- Element może zawierać inne elementy oraz atrybuty
- Element otoczony jest znacznikami początku <…> oraz końca
</…>
|
|
5
|
- Element pusty (nie zawierający innych elementów) można opisać jednym znacznikiem
nieparzystym <…/>
- Atrybuty elementu wymienia się w jego znaczniku, podając od razu wartość
w cudzysłowie: <element attr1="val1" attr2="val2"
/>
- Komentarze jak w HTML <!-- … -->
|
|
6
|
- case sensitive
- Sekcje CDATA
- <![CDATA[
Każdy <znacznik /> tutaj zostanie zignorowany.
]]>
|
|
7
|
- <?xml version="1.0" encoding="utf-8"?>
- <address_book>
- <person status="family">
- <firstname>Jedrzej</firstname>
- <surname>Sobanski</surname>
- <address>Wiatrakowa 7</address>
- <phone>695 654 234</phone>
- <email>sobanski@plusnet.pl</email>
- </person>
- <person status="business">
- <firstname>Bartek</firstname>
- <surname>Staszalek</surname>
- <address>Nowodworska 12</address>
- <phone/>
- <email>stach@plusnet.pl</email>
- </person>
- </address_book>
|
|
8
|
- Plik HTML 4.01 Strict:
- <!DOCTYPE html PUBLIC „…" „…">
- <html>
- <head>
- <meta http-equiv="content-type" content=„…">
- <title>Tabelki HTML i Style CSS</title>
- </head>
- <BODY>
- <div>
- <table border=1>
- <tr><td></td></tr>
- </table>
- <br>
- </div>
- </body>
- </html>
|
|
9
|
|
|
10
|
|
|
11
|
- XML + Java = przenośne dane + przenośne programy
|
|
12
|
|
|
13
|
- DOM – Document Object Model
- Interfejs dla parserów XML
- Zwraca drzewo parsowanego dokumentu
|
|
14
|
- javax.xml.parsers.DocumentBuilderFactory – fabryka dla DocumentBuilder
- javax.xml.parsers.DocumentBuilder – parser dokumentów
- Org.w3c.dom.Document – reprezentuje dokument XML
- Org.w3c.dom.Element:Node – reprezentuje element
- Document DocumentBuilder.parse(…)
- Element Document.getDocumentElement()
- String Node.getNodeName()
- String Node.getNodeValue()
- NamedNodeMap Node.getAttributes()
- NodeList Node.getChildNodes()
|
|
15
|
|
|
16
|
|
|
17
|
- Zbiór reguł opisujących format dokumentu
- Określa dopuszczalne elementy podrzędne i atrybuty
|
|
18
|
- <!DOCTYPE TVSCHEDULE [
- <!ELEMENT TVSCHEDULE (CHANNEL?)>
- <!ELEMENT CHANNEL (BANNER,DAY*)>
- <!ELEMENT BANNER (#PCDATA)>
- <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
- <!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
- <!ELEMENT DESCRIPTION (#PCDATA)>
- ...
- <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
- <!ATTLIST DESCRIPTION LANGUAGE CDATA #IMPLIED>
- ]>
|
|
19
|
- DocumentBuilderFactory.setValidating(true);
- DocumentBuilderFactory. setIgnoringElementContentWhitespace(true);
- Teraz nie trzeba będzie sprawdzać nazw elementów!!!
|
|
20
|
|
|
21
|
|
|
22
|
- Plik Schema jest plikiem XML
- Można nakładać silne restrykcje na wartości (własne typy, wyrażenia
regularne, typy abstrakcyjne)
- Pozwala na różne struktury dokumentu w zależności od wartości
|
|
23
|
|
|
24
|
- Zgodnie z Schema przy użyciu Xerces
|
|
25
|
|
|
26
|
|
|
27
|
- Generuje zdarzenia podczas przetwarzania
- Nie pamięta całego dokumentu przy przetwarzaniu (dobre przy wielkich
dokumentach)
|
|
28
|
- javax.xml.parsers.SAXParserFactory – fabryka dla SAXParser
- javax.xml.parsers.SAXParser – parser dokumentów
- org.xml.sax.helpers.DefaultHandler – klasa obsługująca zdarzenia podczas
parsowania
- void SAXParser.parse(input, DefaultHandler)
- DefaultHandler:
- startDocument()
- startElement(…)
- warning(…)
- error(…)
- endElement(…)
- endDocument()
- processingInstruction(…)
|
|
29
|
|
|
30
|
|
|
31
|
- // pusty dokument
- Document DocumentBuilder.newDocument()
- // dodaje element główny
- Node Document.appendChild(Node)
- // ustawienie/dodanie atrybutu
- void Element.setAttribute(String, String)
- // dodaje węzeł wewnętrzny
- Node Node.appendChild(Node)
|
|
32
|
|
|
33
|
|
|
34
|
- Pozwala poruszać się po dokumencie
- Główny element w XSLT
- Ogromna biblioteka funkcji
- Bardzo podobne do ścieżek w drzewie katalogów w UNIX
- Ponadto dodatkowy język „poruszania się” po węzłach
|
|
35
|
- Określa jak interpretować dokument XML jako dokument innego formatu
- Umożliwia przetworzenie na HTML, PDF oraz inny rodzaj XML
- Umożliwia tworzenie informacji o danych już istniejących (zliczanie,
sortowanie)
|
|
36
|
|
|
37
|
|
|
38
|
- package javax.xml.transform…
- TransformerFactory – fabryka transformerów
- Transformer – transformer :-)
- StreamSource – źródło transformacji (plik XSL)
- StreamResult – cel transformacji
- DOMSource(SAXSource) – źródło do przetransformowania
|
|
39
|
|
|
40
|
- [1] C. S. Horstmann, G. Cornell; Core Java 2 - techniki zaawansowane; wydanie
polskie, 2002 Helion
- [2] http://java.sun.com
- [3] http://w3schools.com
- [4] http://xml.apache.org
|